﻿using System.Collections.Generic;
using MJD.Comunes.Entidades;
using MJD.Transaccional.Comandos.Implementacion.ComandosAseguradora;
using MJD.Transaccional.Comandos.Interfaces;

namespace MJD.Transaccional.Comandos.Fabricas
{
    /// <summary>
    /// Clase que hace de fabrica para los comandos que tienen que ver con la entidad aseguradora
    /// </summary>
    public class FabricaComandosAseguradora
    {
        /// <summary> Metodo que obtiene una instancia del comando que inserta o modifica los datos de una aseguradora </summary>
        /// <param name="aseguradora">datos de la aseguradora que se insertara o modifcara</param>
        /// <returns>Instancia del comando que inserta o modifca los datos de una aseguradora</returns>
        public static IComando<bool> ObtenerComandoInsertarModificar(Aseguradora aseguradora)
        {
            return new InsertarModificar(aseguradora);
        }


        /// <summary> Metodo que obtiene una una instancia de un comando que consulta una aseguradora dado los parametros indicados </summary>
        /// <param name="consulta">datos para realizar la consulta de la aseguradora</param>
        /// <returns>comando que retorna una Lista de aseguradoras que cumplen con los parametros de busquedas</returns>
        public static IComando<IList<Aseguradora>> ConsultarAseguradoras(Aseguradora consulta)
        {
            return new ConsultarAseguradoras(consulta);
        }


        /// <summary>
        /// Metodo que obtiene una instancia de un comando que inserta o modifca todos los datos de la aseguradora
        /// </summary>
        /// <param name="aseguradora"></param>
        /// <returns></returns>
        public static IComando<bool> ObtenerComandoInsertarModificarCompleto(Aseguradora aseguradora)
        {
            return new InsertarModificarCompleto(aseguradora);
        }
    }
}
